<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>
    <script>
        // 类名必须大写
        class Student {
            // 构造函数 【构造一个对象的函数】
            constructor(name, age) {
                // console.log(this); // Student {}
                this.name = name
                // console.log(this); // Student {name: '李四'}
                this.age = age
                // console.log('构造对象');
                // console.log(this);// Student {name: '李四', age: 18}
            }
        }

        // new一个实例对象，一定会执行构造函数
        const student1 = new Student('李四', 18)

        // new的过程
        // 1. 创建一个空对象（new出来一个空对象）
        // 2. 调用构造函数
        // 3. 让构造函数的this指向这个对象
        // 4. 执行构造函数里面的代码，给this（即这个对象）添加属性和方法。

        // 注意：如果不想给new出来的对象添加本身身上的方法，可以不写这个constructor构造函数，
        // 直接写后面的那些方法即可（也可以不写）。这时，如果我们不写这个constructor构造函数，
        // 代码编译时会自动帮我们生成一个constructor构造函数。
    </script>
</body>

</html>